package main

import (
	"fmt"
	"os"
	"path/filepath"
)

var prefix = []byte{0xff, 0xd8}
var postfix = []byte{0xff, 0xd9}

// SliceCompare SliceCompare[T comparable]
//
//	@Description: 切片内容比较，支持泛型
//	@param slice1
//	@param slice2
//	@return bool 相同为true，相异为false
func SliceCompare[T comparable](slice1 []T, slice2 []T) bool {
	if len(slice1) != len(slice2) {
		return false
	}
	for i := 0; i < len(slice1); i++ {
		if slice1[i] != slice2[i] {
			return false
		}
	}
	return true
}

func isValidJpeg(filename string) bool {
	filecontent, err := os.ReadFile(filename)
	if err != nil {
		fmt.Printf("无法打开文件：%s，%v\n", filename, err)
		return false
	}
	return SliceCompare(filecontent[:2], prefix) && SliceCompare(filecontent[len(filecontent)-2:], postfix)
}

func main() {
	if len(os.Args) < 2 {
		panic("提供参数太少！")
	}
	files, err := filepath.Glob(os.Args[1])
	if err != nil {
		panic(err)
	}
	for _, f := range files {
		if !isValidJpeg(f) {
			fmt.Printf("不是有效的jpeg文件：%s\n", f)
		}
	}
}
